forked from GitHub/gf-core
mock up math extended with Agda
This commit is contained in:
53
examples/math/MathAgd.gf
Normal file
53
examples/math/MathAgd.gf
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
--# -path=.:prelude
|
||||||
|
|
||||||
|
concrete MathAgd of Mathw = open Prelude in {
|
||||||
|
|
||||||
|
flags lexer = codelit ; unlexer = codelit ;
|
||||||
|
|
||||||
|
-- lincat Section ; Context ; Typ ;
|
||||||
|
lincat Obj, Prop = {s,name : Str} ;
|
||||||
|
-- Proof ; Var ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
SDefObj cont obj typ df =
|
||||||
|
ss (obj.name ++ "::" ++ cont.s ++ typ.s ++
|
||||||
|
"=" ++ df.s ++ ";") ;
|
||||||
|
SDefProp cont prop df =
|
||||||
|
ss (prop.name ++ "::" ++ cont.s ++ "Prop" ++
|
||||||
|
"=" ++ df.s ++ ";") ;
|
||||||
|
SAxiom cont prop =
|
||||||
|
ss ("ax" ++ "::" ++ cont.s ++ prop.s ++ ";") ;
|
||||||
|
STheorem cont prop proof =
|
||||||
|
ss ("thm" ++ "::" ++ cont.s ++ prop.s ++
|
||||||
|
"=" ++ proof.s ++ ";") ;
|
||||||
|
|
||||||
|
CEmpty = ss [] ;
|
||||||
|
CObj vr typ co = ss ("(" ++ vr.s ++ "::" ++ typ.s ++ ")" ++ co.s) ;
|
||||||
|
CProp prop co = ss ("(" ++ "_" ++ "::" ++ prop.s ++ ")" ++ co.s) ;
|
||||||
|
|
||||||
|
OVar v = obj v.s [] ;
|
||||||
|
|
||||||
|
V_x = ss "x" ;
|
||||||
|
V_y = ss "y" ;
|
||||||
|
V_z = ss "z" ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
obj : Str -> Str -> {s,name : Str} = \f,xs -> {
|
||||||
|
s = f ++ xs ;
|
||||||
|
name = f
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- lexicon
|
||||||
|
lin
|
||||||
|
Set = ss "set" ;
|
||||||
|
Nat = ss ["Nat"] ;
|
||||||
|
Zero = obj "Zero" [] ;
|
||||||
|
Succ x = obj "Succ" x.s ;
|
||||||
|
One = obj "one" [] ;
|
||||||
|
Two = obj "two" [] ;
|
||||||
|
Even x = obj "Even" x.s ;
|
||||||
|
Odd x = obj "Odd" x.s ;
|
||||||
|
Prime x = obj "Prime" x.s ;
|
||||||
|
Divisible x y = obj "Div" (x.s ++ y.s) ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,28 +4,25 @@ concrete MathEnz of Mathw = open Prelude in {
|
|||||||
|
|
||||||
flags lexer = textlit ; unlexer = textlit ;
|
flags lexer = textlit ; unlexer = textlit ;
|
||||||
|
|
||||||
-- lincat Section ; Label ; Context ; Typ ; Obj ; Prop ; Proof ; Var ;
|
-- lincat Section ; Context ; Typ ; Obj ; Prop ; Proof ; Var ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
SDefObj lab cont obj typ df =
|
SDefObj cont obj typ df =
|
||||||
ss ("Definition" ++ lab.s ++ "." ++ cont.s ++
|
ss ("Definition" ++ "." ++ cont.s ++
|
||||||
obj.s ++ "is" ++ "a" ++ typ.s ++ "," ++ "defined" ++ "as" ++ df.s ++ ".") ;
|
obj.s ++ "is" ++ "a" ++ typ.s ++ "," ++ "defined" ++ "as" ++ df.s ++ ".") ;
|
||||||
SDefProp lab cont prop df =
|
SDefProp cont prop df =
|
||||||
ss ("Definition" ++ lab.s ++ "." ++ cont.s ++ "we" ++ "say" ++
|
ss ("Definition" ++ "." ++ cont.s ++ "we" ++ "say" ++
|
||||||
"that" ++ prop.s ++ "to" ++ "mean" ++ "that" ++ df.s ++ ".") ;
|
"that" ++ prop.s ++ "if" ++ df.s ++ ".") ;
|
||||||
SAxiom lab cont prop =
|
SAxiom cont prop =
|
||||||
ss ("Axiom" ++ lab.s ++ "." ++ cont.s ++ prop.s ++ ".") ;
|
ss ("Axiom" ++ "." ++ cont.s ++ prop.s ++ ".") ;
|
||||||
STheorem lab cont prop proof =
|
STheorem cont prop proof =
|
||||||
ss ("Theorem" ++ lab.s ++ "." ++ cont.s ++ prop.s ++ "." ++ proof.s ++ ".") ;
|
ss ("Theorem" ++ "." ++ cont.s ++ prop.s ++ "." ++ proof.s ++ ".") ;
|
||||||
|
|
||||||
CEmpty = ss [] ;
|
CEmpty = ss [] ;
|
||||||
CObj vr typ co = ss ("let" ++ vr.s ++ "be" ++ "a" ++ typ.s ++ "." ++ co.s) ;
|
CObj vr typ co = ss ("let" ++ vr.s ++ "be" ++ "a" ++ typ.s ++ "." ++ co.s) ;
|
||||||
CProp prop co = ss ("assume" ++ prop.s ++ "." ++ co.s) ;
|
CProp prop co = ss ("assume" ++ prop.s ++ "." ++ co.s) ;
|
||||||
|
|
||||||
OVar v = v ;
|
OVar v = v ;
|
||||||
LNone = ss [] ;
|
|
||||||
LString s = s ;
|
|
||||||
VString s = s ;
|
|
||||||
|
|
||||||
V_x = ss "x" ;
|
V_x = ss "x" ;
|
||||||
V_y = ss "y" ;
|
V_y = ss "y" ;
|
||||||
|
|||||||
@@ -4,28 +4,25 @@ concrete MathSwz of Mathw = open Prelude in {
|
|||||||
|
|
||||||
flags lexer = textlit ; unlexer = textlit ;
|
flags lexer = textlit ; unlexer = textlit ;
|
||||||
|
|
||||||
-- lincat Section ; Label ; Context ; Typ ; Obj ; Prop ; Proof ; Var ;
|
-- lincat Section ; Context ; Typ ; Obj ; Prop ; Proof ; Var ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
SDefObj lab cont obj typ df =
|
SDefObj cont obj typ df =
|
||||||
ss ("Definition" ++ lab.s ++ "." ++ cont.s ++
|
ss ("Definition" ++ "." ++ cont.s ++
|
||||||
obj.s ++ "är" ++ "ett" ++ typ.s ++ "," ++ "definierat" ++ "som" ++ df.s ++ ".") ;
|
obj.s ++ "är" ++ "ett" ++ typ.s ++ "," ++ "definierat" ++ "som" ++ df.s ++ ".") ;
|
||||||
SDefProp lab cont prop df =
|
SDefProp cont prop df =
|
||||||
ss ("Definition" ++ lab.s ++ "." ++ cont.s ++ "vi" ++ "säger" ++
|
ss ("Definition" ++ "." ++ cont.s ++ "vi" ++ "säger" ++
|
||||||
"att" ++ prop.s ++ "vilket" ++ "menar" ++ "att" ++ df.s ++ ".") ;
|
"att" ++ prop.s ++ "om" ++ df.s ++ ".") ;
|
||||||
SAxiom lab cont prop =
|
SAxiom cont prop =
|
||||||
ss ("Axiom" ++ lab.s ++ "." ++ cont.s ++ prop.s ++ ".") ;
|
ss ("Axiom" ++ "." ++ cont.s ++ prop.s ++ ".") ;
|
||||||
STheorem lab cont prop proof =
|
STheorem cont prop proof =
|
||||||
ss ("Theorem" ++ lab.s ++ "." ++ cont.s ++ prop.s ++ "." ++ proof.s ++ ".") ;
|
ss ("Theorem" ++ "." ++ cont.s ++ prop.s ++ "." ++ proof.s ++ ".") ;
|
||||||
|
|
||||||
CEmpty = ss [] ;
|
CEmpty = ss [] ;
|
||||||
CObj vr typ co = ss ("låt" ++ vr.s ++ "vara" ++ "ett" ++ typ.s ++ "." ++ co.s) ;
|
CObj vr typ co = ss ("låt" ++ vr.s ++ "vara" ++ "ett" ++ typ.s ++ "." ++ co.s) ;
|
||||||
CProp prop co = ss ("anta" ++ "att" ++ prop.s ++ "." ++ co.s) ;
|
CProp prop co = ss ("anta" ++ "att" ++ prop.s ++ "." ++ co.s) ;
|
||||||
|
|
||||||
OVar v = v ;
|
OVar v = v ;
|
||||||
LNone = ss [] ;
|
|
||||||
LString s = s ;
|
|
||||||
VString s = s ;
|
|
||||||
|
|
||||||
V_x = ss "x" ;
|
V_x = ss "x" ;
|
||||||
V_y = ss "y" ;
|
V_y = ss "y" ;
|
||||||
|
|||||||
Reference in New Issue
Block a user