Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
{
"terms": {
"name": "judge_t",
"types": [
{
"type_name": "var_t",
"constrs": [
{
"constr_name": "v",
"args": [ { "arg_name": "x1", "arg_type": [ "StringT" ] } ],
"draw": [ [ "Arg", "x1" ] ]
}
]
},
{
"type_name": "value_t",
"constrs": [
{
"constr_name": "var",
"args": [ { "arg_name": "x1", "arg_type": [ "RecT", "var_t" ] } ],
"draw": [ [ "Arg", "x1" ] ]
},
{
"constr_name": "fun",
"args": [
{ "arg_name": "x1", "arg_type": [ "RecT", "var_t" ] },
{ "arg_name": "e2", "arg_type": [ "RecT", "term_t" ] }
],
"draw": [
[ "Str", "fun " ],
[ "Arg", "x1" ],
[ "Str", "-> " ],
[ "Arg", "e2" ]
]
}
]
},
{
"type_name": "term_t",
"constrs": [
{
"constr_name": "val",
"args": [
{ "arg_name": "v1", "arg_type": [ "RecT", "value_t" ] }
],
"draw": [ [ "Arg", "v1" ] ]
},
{
"constr_name": "app",
"args": [
{ "arg_name": "e1", "arg_type": [ "RecT", "term_t" ] },
{ "arg_name": "e2", "arg_type": [ "RecT", "term_t" ] }
],
"draw": [ [ "Arg", "e1" ], [ "Str", " @ " ], [ "Arg", "e2" ] ]
}
]
},
{
"type_name": "tvar_t",
"constrs": [
{
"constr_name": "tv",
"args": [ { "arg_name": "t1", "arg_type": [ "StringT" ] } ],
"draw": [ [ "Arg", "t1" ] ]
}
]
},
{
"type_name": "type_t",
"constrs": [
{ "constr_name": "int", "args": [], "draw": [ [ "Str", "int" ] ] },
{
"constr_name": "tvar",
"args": [
{ "arg_name": "t1", "arg_type": [ "RecT", "tvar_t" ] }
],
"draw": [ [ "Arg", "t1" ] ]
},
{
"constr_name": "arrow",
"args": [
{ "arg_name": "t1", "arg_type": [ "RecT", "type_t" ] },
{ "arg_name": "t2", "arg_type": [ "RecT", "type_t" ] }
],
"draw": [ [ "Arg", "t1" ], [ "Str", " => " ], [ "Arg", "t1" ] ]
}
]
},
{
"type_name": "env_t",
"constrs": [
{ "constr_name": "empty", "args": [], "draw": [ [ "Str", "[]" ] ] },
{
"constr_name": "cons",
"args": [
{ "arg_name": "x1", "arg_type": [ "RecT", "var_t" ] },
{ "arg_name": "t2", "arg_type": [ "RecT", "type_t" ] },
{ "arg_name": "e3", "arg_type": [ "RecT", "env_t" ] }
],
"draw": [
[ "Str", "( " ],
[ "Arg", "x1" ],
[ "Str", " , " ],
[ "Arg", "t2" ],
[ "Str", " ) :: " ],
[ "Arg", "e3" ]
]
}
]
},
{
"type_name": "judge_t",
"constrs": [
{
"constr_name": "judge",
"args": [
{ "arg_name": "env", "arg_type": [ "RecT", "env_t" ] },
{ "arg_name": "term", "arg_type": [ "RecT", "term_t" ] },
{ "arg_name": "type", "arg_type": [ "RecT", "type_t" ] }
],
"draw": [
[ "Arg", "env" ],
[ "Str", " |- " ],
[ "Arg", "term" ],
[ "Str", " : " ],
[ "Arg", "type" ]
]
},
{
"constr_name": "equal",
"args": [
{ "arg_name": "t1", "arg_type": [ "RecT", "type_t" ] },
{ "arg_name": "t2", "arg_type": [ "RecT", "type_t" ] }
],
"draw": [ [ "Arg", "t1" ], [ "Str", " = " ], [ "Arg", "t2" ] ]
}
]
}
]
},
"infers": [
{
"name": "tapp",
"rule": [
"I",
{
"conclusion": [
"V",
"judge_t",
"judge",
[
[ "M", "env_t", "env" ],
[
"V",
"term_t",
"app",
[ [ "M", "term_t", "tm1" ], [ "M", "term_t", "tm2" ] ]
],
[ "M", "type_t", "tp2" ]
]
],
"premises": [
[
"V",
"judge_t",
"judge",
[
[ "M", "env_t", "env" ],
[ "M", "term_t", "tm1" ],
[
"V",
"type_t",
"arrow",
[ [ "M", "type_t", "tp1" ], [ "M", "type_t", "tp2" ] ]
]
]
],
[
"V",
"judge_t",
"judge",
[
[ "M", "env_t", "env" ],
[ "M", "term_t", "tm2" ],
[ "M", "type_t", "tp1" ]
]
]
]
}
]
},
{
"name": "tfun",
"rule": [
"I",
{
"conclusion": [
"V",
"judge_t",
"judge",
[
[ "M", "env_t", "env" ],
[
"V",
"term_t",
"val",
[
[
"V",
"value_t",
"fun",
[ [ "M", "var_t", "x" ], [ "M", "term_t", "tm" ] ]
]
]
],
[
"V",
"type_t",
"arrow",
[ [ "M", "type_t", "tp1" ], [ "M", "type_t", "tp2" ] ]
]
]
],
"premises": [
[
"V",
"judge_t",
"judge",
[
[
"V",
"env_t",
"cons",
[
[ "M", "var_t", "x" ],
[ "M", "type_t", "tp1" ],
[ "M", "env_t", "env" ]
]
],
[ "M", "term_t", "tm" ],
[ "M", "type_t", "tp2" ]
]
]
]
}
]
},
{
"name": "tvarzero",
"rule": [
"I",
{
"conclusion": [
"V",
"judge_t",
"judge",
[
[
"V",
"env_t",
"cons",
[
[ "M", "var_t", "x" ],
[ "M", "type_t", "tp1" ],
[ "M", "env_t", "env" ]
]
],
[
"V",
"term_t",
"val",
[ [ "V", "value_t", "var", [ [ "M", "var_t", "x" ] ] ] ]
],
[ "M", "type_t", "tp2" ]
]
],
"premises": [
[
"V",
"judge_t",
"equal",
[ [ "M", "type_t", "tp1" ], [ "M", "type_t", "tp2" ] ]
]
]
}
]
},
{
"name": "tvarsuc",
"rule": [
"I",
{
"conclusion": [
"V",
"judge_t",
"judge",
[
[
"V",
"env_t",
"cons",
[
[ "M", "var_t", "y" ],
[ "M", "type_t", "tp1" ],
[ "M", "env_t", "env" ]
]
],
[
"V",
"term_t",
"val",
[ [ "V", "value_t", "var", [ [ "M", "var_t", "x" ] ] ] ]
],
[ "M", "type_t", "tp2" ]
]
],
"premises": [
[
"V",
"judge_t",
"judge",
[
[ "M", "env_t", "env" ],
[
"V",
"term_t",
"val",
[ [ "V", "value_t", "var", [ [ "M", "var_t", "x" ] ] ] ]
],
[ "M", "type_t", "tp2" ]
]
]
]
}
]
},
{
"name": "tequal",
"rule": [
"A",
{
"axiom": [
"V",
"judge_t",
"equal",
[ [ "M", "type_t", "tp" ], [ "M", "type_t", "tp" ] ]
]
}
]
}
],
"input" : [ "M", "judge_t", "j" ]
}