This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| mmlang> :[model,mm][define,tree<=[?0|(int;tree;int)]] | |
| ==>_[define,tree<=_[_{?}<=_[is,bool<=_[a,0]]|(int;tree;int)]] | |
| mmlang> 0 => tree | |
| ==>tree:0 | |
| mmlang> 1 => tree | |
| language error: 1 is not a tree | |
| mmlang> (1;0;1) => tree | |
| ==>tree:(1;tree:0;1) | |
| mmlang> (1;(2;0;2);1) => tree | |
| ==>tree:(1;tree:(2;tree:0;2);1) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| mmlang> 1 | |
| ==>1 | |
| mmlang> 1-<(_;_) | |
| ==>(1;1) | |
| mmlang> 1-<(_;_)=(vertex;vertex) | |
| ==>(vertex:('id'->nat:1);vertex:('id'->nat:1)) | |
| mmlang> 1-<(_;_)=(vertex;vertex)=>edge | |
| ==>edge:('outV'->vertex:('id'->nat:1),'inV'->vertex:('id'->nat:1)) | |
| mmlang> | |
| mmlang> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| List(edge<=(vertex;vertex)[split,('outV'->vertex<=(vertex;vertex)[get,0,_],'inV'->vertex<=(vertex;vertex)[get,1,_])]) | |
| List(cmplx:(real;real), <x>, cmplx<=cmplx:(real;real)<x>, [plus,cmplx<y>]{2}, [combine,(real;real){2}], cmplx:(real;real){2}) | |
| List(attr:('key'->_,'value'->_)) | |
| List(digraph#1105759305:('type'->([inst]->([inst]),attr->(attr:('key'->_,'value'->_),attr<=(str;_[id])[split,('key'->str<=(str;_[id])[get,0,_],'value'->_<=(str;_[id])[get,1,_])]),nat->(nat<=int[is,bool<=int[gt,0]]),cmplx:(real;real){2}->(cmplx{2}<=cmplx:(real;real)<x>[plus,cmplx<y>]{2}),bool->(bool),real->(real),str->(str),cmplx:(real;real)->(cmplx:(real;real)),rec->(rec),int->(int<=vertex[get,'id',_],int<=nat,int),edge->(edge:('outV'->vertex,'inV'->vertex),edge<=(vertex;vertex)[split,('outV'->vertex<=(vertex;vertex)[get,0,_],'inV'->vertex<=(vertex;vertex)[get,1,_])]),(_)->((_)<=(_[id]),(_)),(int)->((int)<=(int[neg][neg]),(int)<=(int[plus,0]),(int)<=(int[mult,1]),(int)),(_[1])->((_[1])<=(int[one]),(_[1])),(_[0])->((_[0])<=(int[zero]),(_[ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| {"id":{"@type":"g:Int64","@value":0},"label":"type","properties":{"iso":[{"id":{"@type":"g:Int64","@value":3},"value":{"empty":true,"serial":false,"choice":false,"plus":false,"parallel":false}}],"obj":[{"id":{"@type":"g:Int64","@value":1},"value":{"empty":true,"serial":false,"choice":false,"plus":false,"parallel":false}}],"root":[{"id":{"@type":"g:Int64","@value":2},"value":true}]}} | |
| {"id":{"@type":"g:Int64","@value":64},"label":"type","inE":{"noop":[{"id":{"@type":"g:Int64","@value":68},"outV":{"@type":"g:Int64","@value":17},"properties":{"iso":{"empty":true,"serial":false,"choice":false,"plus":false,"parallel":false},"obj":{"empty":true,"serial":false,"choice":false,"plus":false,"parallel":false}}}]},"properties":{"iso":[{"id":{"@type":"g:Int64","@value":67},"value":{}}],"obj":[{"id":{"@type":"g:Int64","@value":65},"value":{}}],"root":[{"id":{"@type":"g:Int64","@value":66},"value":false}]}} | |
| {"id":{"@type":"g:Int64","@value":4},"label":"type","inE":{"split":[{"id":{"@type":"g:Int64","@value":16},"outV":{"@typ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| mmlang> :[model,mm] // the base model (int,bool,real,str,lst,rec) | |
| ......> [define, | |
| ......> vertex<=rec, // a vertex is a sort of record | |
| ......> vertex<=int-<('id'->_), // a vertex can be constructed from an int | |
| ......> edge<=rec, // an edge is a sort of record | |
| ......> edge<=(vertex;vertex)-<('source'->.0,'target'->.1)] // an edge can be constructed from a vertex x vertex pair | |
| ==>_[define,vertex<=rec,vertex<=int[split,('id'->int)],edge<=rec,edge<=(vertex;vertex)[split,('source'->vertex<=(vertex;vertex)[get,0,_],'target'->vertex<=(vertex;vertex)[get,1,_])]] | |
| mmlang> 5 => vertex // morph 5 into a vertex | |
| ==>vertex:('id'->5) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| lazy val cType:Parser[Obj] = (anonType | boolType | realType | intType | strType | instType | (not(inst) ~> (lstType | recType)) | tokenType) ~ opt(quantifier) ^^ (x => x._2.map(q => x._1.q(q)).getOrElse(x._1)) | |
| lazy val dtype:Parser[Obj] = cType ~ rep[Inst[Obj, Obj]](inst) ^^ (x => x._2.foldLeft(x._1.asInstanceOf[Obj])((x, y) => y.exec(x))) | anonTypeSugar | |
| // the top definition of a type | |
| lazy val aType:Parser[Obj] = opt(cType <~ Tokens.:<=) ~ dtype ^^ { | |
| case Some(range) ~ domain => range <= domain | |
| case None ~ domain => domain | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| pg_2:('type' -> ( | |
| graph -> (graph<=edge{*}), | |
| vertex -> (vertex<=('id'->int), | |
| vertex<=int-<('id'->_)), | |
| edge -> (edge<=('outV'->vertex,'inV'->vertex), | |
| edge<=(vertex;vertex)-<('outV'->.0,'inV'->.1)))) <= mm |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| HoTT and Sweaty with mm-ADT | |
| --------------------------- | |
| http://mm-adt.org/vm | |
| In homotopy type theory, | |
| there is a space U, (universal set) | |
| a is a point in U, (object) | |
| b is a point in U. (object) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* MODEL: digraph (extends numbers and mm) | |
| digraph:( | |
| 'type' -> ( | |
| vertex -> (vertex:('id'->nat,'attrs'->attr{*}), | |
| vertex<=nat-<('id'->nat), | |
| vertex<=(nat;attr)=(_)-<('id'->.0,'attrs'->.1), | |
| vertex<=int[is<0]-<([neg];('no';'data'))), | |
| attr -> (attr:('key'->_,'value'->_), | |
| attr<=(str;_)-<('key'->.0,'value'->.1)), | |
| edge -> (edge:(outV->vertex,inV->vertex)) |