forked from GitHub/gf-core
67 lines
1.8 KiB
Plaintext
67 lines
1.8 KiB
Plaintext
abstract basic {
|
|
cat Float ; -- 0.693147
|
|
cat Int ; -- 0.693147
|
|
cat N ; -- 0.693147
|
|
cat P N ; -- 0.693147
|
|
cat S ; -- 0.693147
|
|
cat String ; -- 0.693147
|
|
data c : N -> S ; -- 1.60944
|
|
fun floatLit : Float -> S ; -- 1.60944
|
|
fun imp : ({x} : N) -> (y : N) -> S ; -- 1.60944
|
|
fun ind : P z -> ((x : N) -> P x -> P (s x)) -> (x : N) -> P x ; -- 0.693147
|
|
fun intLit : Int -> S ; -- 1.60944
|
|
fun nat : (x : N) -> P x ; -- 0.693147
|
|
data s : N -> N ; -- 0.693147
|
|
fun stringLit : String -> S ; -- 1.60944
|
|
data z : N ; -- 0.693147
|
|
}
|
|
concrete basic_cnc {
|
|
lincat Float = [
|
|
"s"
|
|
]
|
|
lindef Float(0) -> Float[String(0)] = [S0]
|
|
linref String(0) -> Float[Float(0)] = [S0]
|
|
lincat Int = [
|
|
"s"
|
|
]
|
|
lindef Int(0) -> Int[String(0)] = [S0]
|
|
linref String(0) -> Int[Int(0)] = [S0]
|
|
lincat N = [
|
|
"s"
|
|
]
|
|
lindef N(0) -> N[String(0)] = [S0]
|
|
linref {i<2} . String(0) -> N[N(i)] = [S0]
|
|
lincat P = [
|
|
"s"
|
|
]
|
|
lindef P(0) -> P[String(0)] = [S0]
|
|
linref String(0) -> P[P(0)] = [S0]
|
|
lincat S = [
|
|
""
|
|
]
|
|
lindef S(0) -> S[String(0)] = [S0]
|
|
linref String(0) -> S[S(0)] = [S0]
|
|
lincat String = [
|
|
"s"
|
|
]
|
|
lindef String(0) -> String[String(0)] = [S0]
|
|
linref String(0) -> String[String(0)] = [S0]
|
|
lin {i<2} . S(0) -> c[N(i)] = [S0]
|
|
lin S(0) -> floatLit[Float(0)] = [S0]
|
|
lin {i<2} . P(0) -> ind[P(0),P(0),N(i)] = [S1]
|
|
lin S(0) -> intLit[Int(0)] = [S0]
|
|
lin {i<2} . P(0) -> nat[N(i)] = [S5]
|
|
lin N(0) -> s[N(0)] = [S2]
|
|
lin N(0) -> s[N(1)] = [S4]
|
|
lin S(0) -> stringLit[String(0)] = [S0]
|
|
lin N(1) -> z[] = [S3]
|
|
sequences {
|
|
S0 = <0,0>
|
|
S1 = <0,0> "&" "λ" SOFT_BIND <1,$0> SOFT_BIND "," SOFT_BIND <1,$1> "." <1,0>
|
|
S2 = <0,0> "+" "1"
|
|
S3 = "0"
|
|
S4 = "1"
|
|
S5 = "nat" SOFT_BIND "(" SOFT_BIND <0,0> SOFT_BIND ")"
|
|
}
|
|
}
|