{
	"calc_name" : "SequentCalc",

	"calc_structure" : {
		"Atprop" : {
			"Atprop" : {
				"type":"string",
				"ascii" : "_",
				"isabelle_se" : "_"
			},
			"Atprop_Freevar" : {
				"type" : "string",
				"isabelle" : "?\\<^sub>A _",
				"isabelle_se" : "_",
				"ascii" : "A? _",
				"latex" : "? _",
				"precedence": [320, 320],
				"shallow" : false
			}
		},

		"Formula" : {
			"Formula_Atprop" : {
				"type": "Atprop",
				"isabelle" : "_ \\<^sub>A",
				"isabelle_se" : "_",
				"precedence": [320, 330]
			},
			"Formula_Freevar" : {
				"type" : "string",
				"isabelle" : "?\\<^sub>F _",
				"isabelle_se" : "_",
				"ascii" : "F? _",
				"latex" : "?_F _",
				"precedence": [340, 330],
				"shallow" : false
			},

			"Formula_Un" : {
				"type" : ["Formula_Un_Op", "Formula"],
				"isabelle" : "U\\<^sub>F _",
				"isabelle_se" : "_",
				"precedence": [330, 331]
			},

			"Formula_Bin" : {
				"type" : ["Formula", "Formula_Bin_Op", "Formula"],
				"isabelle" : "B\\<^sub>F _",
				"isabelle_se" : "_",
				"precedence": [330,330,330, 331]
			}
		},

		"Formula_Un_Op" : {
			"Formula_Not" : {
				"isabelle" : "\\<not>\\<^sub>F",
				"ascii" : "-",
				"latex" : "\\lnot"
			}
		},
		
		"Formula_Bin_Op" : {
			"Formula_And" : {
				"isabelle" : "\\<and>\\<^sub>F",
				"ascii" : "/\\",
				"latex" : "\\wedge",
				"ascii_precedence": [300, 301]
			},
			"Formula_Or" : {
				"isabelle" : "\\<or>\\<^sub>F",
				"ascii" : "\\/",
				"latex" : "\\vee",
				"ascii_precedence": [400, 401]
			},
			"Formula_ImpR" : {
				"isabelle" : "\\<rightarrow>\\<^sub>F",
				"ascii" : ">",
				"latex" : "\\rightarrow",
				"ascii_precedence": [400, 401]
			}
		},

		"Structure" : {
			"Structure_Formula" : {
				"type": "Formula",
				"isabelle" : "_ \\<^sub>S",
				"isabelle_se" : "_ \\<^sub>S",
				"precedence": [330, 340]
			},

			"Structure_Freevar" : {
				"type" : "string",
				"isabelle" : "?\\<^sub>S _",
				"isabelle_se" : "_",
				"ascii" : "? _",
				"latex" : "? _",
				"precedence": [340, 340],
				"shallow" : false
			},

			"Structure_Zer" : {
				"type" : "Structure_Zer_Op",
				"isabelle" : "Z\\<^sub>S",
				"isabelle_se" : "_",
				"precedence": [340, 340]
			},

			"Structure_Bin" : {
				"type" : ["Structure", "Structure_Bin_Op", "Structure"],
				"isabelle" : "B\\<^sub>S _",
				"isabelle_se" : "_",
				"precedence": [340,340,340, 341]
			}
		},

		"Structure_Zer_Op" : {
			"Structure_Empty" : {
				"isabelle" : "I",
				"ascii" : "I",
				"latex" : "I"
			}
		},

		"Structure_Bin_Op" : {
			"Structure_Comma" : {
				"isabelle" : ",\\<^sub>S",
				"ascii" : ",",
				"latex" : ","
			}
		},

		"Sequent" : {
			"Sequent_Structure" : {
				"type": "Structure"
			},

			"Sequent": {
				"type" : ["Structure", "Structure"],
				"isabelle" : "_ \\<turnstile>\\<^sub>S _",
				"ascii" : "_ |- _",
				"latex" : "_ \\vdash _",
				"precedence": [311,311, 310]
			}
		}
	},

	"calc_structure_rules" : {
		"RuleZer" : {
			"Id" : {
				"ascii" : "Id",
				"latex" : "Id"
			},
			"Prem" : {
				"ascii" : "Prem",
				"latex" : "Prem",
				"condition" : "(\\<lambda>x. seq = x)",
				"locale" : "Premise seq"
			}
		},

		"RuleL" : {
			"And_L_1" : {
				"ascii" : "And_L_1",
				"latex" : "\\wedge L_1"
			},
			"And_L_2" : {
				"ascii" : "And_L_2",
				"latex" : "\\wedge L_2"
			},
			"And_R" : {
				"ascii" : "And_R",
				"latex" : "\\wedge R"
			},
			"Or_R_1" : {
				"ascii" : "Or_R_1",
				"latex" : "\\vee R_1"
			},
			"Or_R_2" : {
				"ascii" : "Or_R_2",
				"latex" : "\\vee R_2"
			},
			"Or_L" : {
				"ascii" : "Or_L",
				"latex" : "\\vee L"
			},
			"ImpR_L" : {
				"ascii" : "ImpR_L",
				"latex" : "\\rightarrow L"
			},
			"ImpR_R" : {
				"ascii" : "ImpR_R",
				"latex" : "\\rightarrow R"
			},
			"Not_L" : {
				"ascii" : "Not_L",
				"latex" : "\\neg L"
			},
			"Not_R" : {
				"ascii" : "Not_R",
				"latex" : "\\neg R"
			}
		},


		"RuleStruct" : {
			"W_L"  : {
				"ascii" : "W_L",
				"latex" : "WL"
			},
			"W_R"  : {
				"ascii" : "W_R",
				"latex" : "WR"
			},
			"C_L"  : {
				"ascii" : "C_L",
				"latex" : "CL"
			},
			"C_R"  : {
				"ascii" : "C_R",
				"latex" : "CR"
			}, 		
			"P_L"  : {
				"ascii" : "P_L",
				"latex" : "PL"
			},
			"P_R"  : {
				"ascii" : "P_R",
				"latex" : "PR"
			}, 		
			"A_R"  : {
				"ascii" : "A_R",
				"latex" : "AR"
			}, 		
			"A_R2"  : {
				"ascii" : "A_R2",
				"latex" : "AR"
			}, 	
			"A_L"  : {
				"ascii" : "A_L",
				"latex" : "AL"
			}, 		
			"A_L2"  : {
				"ascii" : "A_L2",
				"latex" : "AL"
			},
			"I_L_L"  : {
				"ascii" : "I_L_L",
				"latex" : "IL_L"
			},
			"I_L_L2"  : {
				"ascii" : "I_L_L2",
				"latex" : "IL_L"
			},
			"I_L_R"  : {
				"ascii" : "I_L_R",
				"latex" : "IL_R"
			},
			"I_L_R2"  : {
				"ascii" : "I_L_R2",
				"latex" : "IL_R"
			},
			"I_R_L"  : {
				"ascii" : "I_R_L",
				"latex" : "IR_L"
			},
			"I_R_L2"  : {
				"ascii" : "I_R_L2",
				"latex" : "IR_L"
			},
			"I_R_R"  : {
				"ascii" : "I_R_R",
				"latex" : "IR_R"
			},
			"I_R_R2"  : {
				"ascii" : "I_R_R2",
				"latex" : "IR_R"
			}
		}
	},

	"rules" : {
		"RuleZer" : {
			"Id" : 				["F?f |- F?f",				""],
			"Prem" : 			["?X |- ?Y",				""]
		},
		"RuleL" : {
			"And_L_1" :			["?X, F?A /\\ F?B |- ?Z", 	"?X, F?A |- ?Z"],
			"And_L_2" :			["?X, F?A /\\ F?B |- ?Z", 	"?X, F?B |- ?Z"],
			"And_R" :			["?X, ?Z |- F?A /\\ F?B, (?Y, ?W)", 	"?X |- F?A, ?Y", "?Z |- F?B, ?W"],
			"Or_R_1" :			["?Z |- F?A \\/ F?B, ?X", 	"?Z |- F?A , ?X"],
			"Or_R_2" :			["?Z |- F?A \\/ F?B, ?X", 	"?Z |- F?B , ?X"],
			"Or_L" :			["(?X, ?Z), F?A \\/ F?B |- ?Y, ?W", 	"?X, F?A |- ?Y", "?Z, F?B |- ?W"],
			"ImpR_L" :			["(?X, ?Z), F?A > F?B |- ?Y, ?W", 	"?X |- F?A, ?Y", "?Z, F?B |- ?W"],
			"ImpR_R" :			["?Z |- F?A > F?B, ?X", 		"?Z, F?A |- F?B, ?X"],
			"Not_L" :			["?X, -F?A |- ?Y", 		"?X |- F?A, ?Y"],
			"Not_R" :			["?X |- -F?A, ?Y", 		"?X, F?A |- ?Y"]
		},
		"RuleStruct" : {
			"W_L" : 			["?X, ?A |- ?Y", 				"?X |- ?Y"],
			"W_R" : 			["?X |- ?A, ?Y", 				"?X |- ?Y"],
			"C_L" : 			["?X, ?A |- ?Y", 				"?X , (?A, ?A) |- ?Y"],
			"C_R" : 			["?X |- ?A, ?Y", 				"?X |- (?A, ?A) , ?Y"],
			"P_L" : 			["(?X1, ?B), (?A, ?X2) |- ?Y", 	"(?X1, ?A), (?B, ?X2) |- ?Y"],
			"P_R" : 			["?X |- (?Y1, ?B), (?A, ?Y2)", 	"?X |- (?Y1, ?A), (?B, ?Y2)"],
			"A_R" : 			["?W |- ?X , (?Y , ?Z)",		"?W |- (?X , ?Y) , ?Z"],
			"A_R2" : 			["?W |- (?X , ?Y) , ?Z",		"?W |- ?X , (?Y , ?Z)"],
			"A_L" : 			["?X , (?Y , ?Z) |- ?W",		"(?X , ?Y) , ?Z |- ?W"],
			"A_L2" : 			["(?X , ?Y) , ?Z |- ?W",		"?X , (?Y , ?Z) |- ?W"],
			"I_L_L" :			["?X |- ?Y", 					"I, ?X |- ?Y"],
			"I_L_L2" :			["I, ?X |- ?Y", 				"?X |- ?Y"],
			"I_L_R" :			["?X |- ?Y", 					"?X, I |- ?Y"],
			"I_L_R2" :			["?X, I |- ?Y", 				"?X |- ?Y"],
			"I_R_L" :			["?X |- ?Y", 					"?X |- I, ?Y"],
			"I_R_L2" :			["?X |- I, ?Y", 				"?X |- ?Y"],
			"I_R_R" :			["?X |- ?Y", 					"?X |- ?Y, I"],
			"I_R_R2" :			["?X |- ?Y, I", 				"?X |- ?Y"]
		}
	}
}
