public static List <GenericInstantiator.EdgeAggregator> CreateTransitiveProportion(ProportionalAngles pss, CongruentAngles conAngs) { List <GenericInstantiator.EdgeAggregator> newGrounded = new List <GenericInstantiator.EdgeAggregator>(); //// Did either of these proportions come from the other? //if (pss.HasRelationPredecessor(conAngs) || conAngs.HasRelationPredecessor(pss)) return newGrounded; // // Create the antecedent clauses // List <GroundedClause> antecedent = new List <GroundedClause>(); antecedent.Add(pss); antecedent.Add(conAngs); // // Create the consequent clause // Angle shared = pss.AngleShared(conAngs); AlgebraicProportionalAngles newPS = new AlgebraicProportionalAngles(pss.OtherAngle(shared), conAngs.OtherAngle(shared)); // Update relationship among the congruence pairs to limit cyclic information generation //newPS.AddPredecessor(pss); //newPS.AddPredecessor(conAngs); newGrounded.Add(new GenericInstantiator.EdgeAggregator(antecedent, newPS, propAnnotation)); return(newGrounded); }
public static List <GenericInstantiator.EdgeAggregator> Instantiate(GroundedClause clause) { List <GenericInstantiator.EdgeAggregator> newGrounded = new List <GenericInstantiator.EdgeAggregator>(); if (!(clause is AngleEquation)) { return(newGrounded); } Equation original = clause as Equation; Equation copyEq = (Equation)original.DeepCopy(); FlatEquation flattened = new FlatEquation(copyEq.lhs.CollectTerms(), copyEq.rhs.CollectTerms()); if (flattened.lhsExps.Count == 1 && flattened.rhsExps.Count == 1) { KeyValuePair <int, int> ratio = Utilities.RationalRatio(flattened.lhsExps[0].multiplier, flattened.rhsExps[0].multiplier); if (ratio.Key != -1) { if (ratio.Key <= 2 && ratio.Value <= 2) { AlgebraicProportionalAngles prop = new AlgebraicProportionalAngles((Angle)flattened.lhsExps[0].DeepCopy(), (Angle)flattened.rhsExps[0].DeepCopy()); List <GroundedClause> antecedent = Utilities.MakeList <GroundedClause>(original); newGrounded.Add(new GenericInstantiator.EdgeAggregator(antecedent, prop, atomAnnotation)); } } } return(newGrounded); }
public override bool Equals(Object obj) { AlgebraicProportionalAngles aps = obj as AlgebraicProportionalAngles; if (aps == null) { return(false); } return(base.Equals(aps)); }
public static List<GenericInstantiator.EdgeAggregator> CreateTransitiveProportion(ProportionalAngles pss, CongruentAngles conAngs) { List<GenericInstantiator.EdgeAggregator> newGrounded = new List<GenericInstantiator.EdgeAggregator>(); //// Did either of these proportions come from the other? //if (pss.HasRelationPredecessor(conAngs) || conAngs.HasRelationPredecessor(pss)) return newGrounded; // // Create the antecedent clauses // List<GroundedClause> antecedent = new List<GroundedClause>(); antecedent.Add(pss); antecedent.Add(conAngs); // // Create the consequent clause // Angle shared = pss.AngleShared(conAngs); AlgebraicProportionalAngles newPS = new AlgebraicProportionalAngles(pss.OtherAngle(shared), conAngs.OtherAngle(shared)); // Update relationship among the congruence pairs to limit cyclic information generation //newPS.AddPredecessor(pss); //newPS.AddPredecessor(conAngs); newGrounded.Add(new GenericInstantiator.EdgeAggregator(antecedent, newPS, propAnnotation)); return newGrounded; }
public static List<GenericInstantiator.EdgeAggregator> Instantiate(GroundedClause clause) { List<GenericInstantiator.EdgeAggregator> newGrounded = new List<GenericInstantiator.EdgeAggregator>(); if (!(clause is AngleEquation)) return newGrounded; Equation original = clause as Equation; Equation copyEq = (Equation)original.DeepCopy(); FlatEquation flattened = new FlatEquation(copyEq.lhs.CollectTerms(), copyEq.rhs.CollectTerms()); if (flattened.lhsExps.Count == 1 && flattened.rhsExps.Count == 1) { KeyValuePair<int, int> ratio = Utilities.RationalRatio(flattened.lhsExps[0].multiplier, flattened.rhsExps[0].multiplier); if (ratio.Key != -1) { if (ratio.Key <= 2 && ratio.Value <= 2) { AlgebraicProportionalAngles prop = new AlgebraicProportionalAngles((Angle)flattened.lhsExps[0].DeepCopy(), (Angle)flattened.rhsExps[0].DeepCopy()); List<GroundedClause> antecedent = Utilities.MakeList<GroundedClause>(original); newGrounded.Add(new GenericInstantiator.EdgeAggregator(antecedent, prop, atomAnnotation)); } } } return newGrounded; }