package nl.rug.ai.mas.oops; import nl.rug.ai.mas.oops.model.ConfigurableModel.Relation; import nl.rug.ai.mas.oops.tableau.EMultiModalValidator; import nl.rug.ai.mas.oops.tableau.FormulaValidator; import nl.rug.ai.mas.oops.tableau.MultiModalValidator; import nl.rug.ai.mas.oops.tableau.PropositionalValidator; import nl.rug.ai.mas.oops.tableau.ModalRuleFactory.RuleID; public enum AxiomSystem { Propositional( new RuleID[] {}, new Relation[] {}, new PropositionalValidator() ), K( new RuleID[] { RuleID.PosO1, RuleID.PosO2, RuleID.BNecO1, RuleID.BNecO2 }, new Relation[] {}, new MultiModalValidator() ), KE ( new RuleID[] { RuleID.PosO1, RuleID.PosO2, RuleID.BNecO1, RuleID.BNecO2, RuleID.EK1, RuleID.EK2, RuleID.EK3, RuleID.EK4 }, new Relation[] {}, new EMultiModalValidator() ), T( new RuleID[] { RuleID.PosO1, RuleID.PosO2, RuleID.BNecO1, RuleID.BNecO2, RuleID.SNecO1, RuleID.SNecO2 }, new Relation[] { Relation.REFLEXIVE }, new MultiModalValidator() ), B( new RuleID[] { RuleID.PosO1, RuleID.PosO2, RuleID.PosS1, RuleID.PosS2, RuleID.BNecO1, RuleID.BNecO2, RuleID.SNecS1, RuleID.SNecS2 }, new Relation[] { Relation.SYMMETRIC }, new MultiModalValidator() ), D( new RuleID[] { RuleID.PosO1, RuleID.PosO2, RuleID.BNecO1, RuleID.BNecO2, RuleID.SNecO3, RuleID.SNecO4 }, new Relation[] { Relation.SERIAL }, new MultiModalValidator() ), K4( new RuleID[] { RuleID.PosO1, RuleID.PosO2, RuleID.PosS1, RuleID.PosS2, RuleID.BNecO1, RuleID.BNecO2 }, new Relation[] { Relation.TRANSITIVE }, new MultiModalValidator() ), K45( new RuleID[] { RuleID.PosO1, RuleID.PosO2, RuleID.PosS1, RuleID.PosS2, RuleID.BNecO1, RuleID.BNecO2, RuleID.SNecS3, RuleID.SNecS4 }, new Relation[] { Relation.TRANSITIVE, Relation.SYMMETRIC }, new MultiModalValidator() ), KD45( new RuleID[] { RuleID.PosO1, RuleID.PosO2, RuleID.PosS1, RuleID.PosS2, RuleID.BNecO1, RuleID.BNecO2, RuleID.SNecO3, RuleID.SNecO4, RuleID.SNecS3, RuleID.SNecS4 }, new Relation[] { Relation.SERIAL, Relation.TRANSITIVE, Relation.SYMMETRIC }, new MultiModalValidator() ), S4( new RuleID[] { RuleID.PosO1, RuleID.PosO2, RuleID.PosS1, RuleID.PosS2, RuleID.BNecO1, RuleID.BNecO2, RuleID.SNecO1, RuleID.SNecO2 }, new Relation[] { Relation.REFLEXIVE, Relation.TRANSITIVE }, new MultiModalValidator() ), S4E( new RuleID[] { RuleID.PosO1, RuleID.PosO2, RuleID.PosS1, RuleID.PosS2, RuleID.BNecO1, RuleID.BNecO2, RuleID.SNecO1, RuleID.SNecO2, RuleID.EK1, RuleID.EK2, RuleID.EK3, RuleID.EK4 }, new Relation[] { Relation.REFLEXIVE, Relation.TRANSITIVE }, new EMultiModalValidator() ), S5( new RuleID[] { RuleID.PosO1, RuleID.PosO2, RuleID.PosS1, RuleID.PosS2, RuleID.BNecO1, RuleID.BNecO2, RuleID.BNecS1, RuleID.BNecS2, RuleID.SNecO1, RuleID.SNecO2, RuleID.SNecS1, RuleID.SNecS2 }, new Relation[] { Relation.REFLEXIVE, Relation.TRANSITIVE, Relation.SYMMETRIC }, new MultiModalValidator() ), S5E( new RuleID[] { RuleID.PosO1, RuleID.PosO2, RuleID.PosS1, RuleID.PosS2, RuleID.BNecO1, RuleID.BNecO2, RuleID.BNecS1, RuleID.BNecS2, RuleID.SNecO1, RuleID.SNecO2, RuleID.SNecS1, RuleID.SNecS2, RuleID.EK1, RuleID.EK2, RuleID.EK3, RuleID.EK4 }, new Relation[] { Relation.REFLEXIVE, Relation.TRANSITIVE, Relation.SYMMETRIC }, new EMultiModalValidator() ); public final RuleID[] rules; public final Relation[] relations; public final FormulaValidator validator; private AxiomSystem(RuleID[] rules, Relation[] relations, FormulaValidator validator) { this.rules = rules; this.relations = relations; this.validator = validator; } public Prover buildProver() { return new Prover(this); } }