summaryrefslogtreecommitdiff
path: root/examples/math/MathAgd.gf
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-10-31 17:13:20 +0000
committeraarne <aarne@cs.chalmers.se>2007-10-31 17:13:20 +0000
commit59e432812829a106d6719f2490e3f64ef77abbff (patch)
tree9a465fe52a377494a706cb289d2012ce65727818 /examples/math/MathAgd.gf
parent3f4d3e69cf8755b31cbc92e779e29cc2ac5dc71b (diff)
mock up math extended with Agda
Diffstat (limited to 'examples/math/MathAgd.gf')
-rw-r--r--examples/math/MathAgd.gf53
1 files changed, 53 insertions, 0 deletions
diff --git a/examples/math/MathAgd.gf b/examples/math/MathAgd.gf
new file mode 100644
index 000000000..9b723c26e
--- /dev/null
+++ b/examples/math/MathAgd.gf
@@ -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) ;
+
+}