public void AddApp(Element res, params Element[] args) { if (Arity == 0) { SetConstant(res); } else { if (args.Length != Arity) { throw new ArgumentException(); } var t = new FuncTuple(this, res, (Element[])args.Clone()); apps.Add(t); var u = new HashSet <Element>(); res.references.Add(t); u.Add(res); foreach (var a in args) { if (!u.Contains(a)) { u.Add(a); a.references.Add(t); } } } }
public void SetConstant(Element res) { if (Arity != 0 || apps.Count > 0) { throw new ArgumentException(); } var t = new FuncTuple(this, res, null); apps.Add(t); res.references.Add(t); }
public void SetConstant(Element res) { if (apps.Count > 0) { throw new ArgumentException(); } Arity = 0; // will throw exception if arity is not null or already 0 var t = new FuncTuple(this, res, null); apps.Add(t); res.references.Add(t); }
public void AddApp(Element res, params Element[] args) { if (Arity == 0) SetConstant(res); else { if (args.Length != Arity) throw new ArgumentException(); var t = new FuncTuple(this, res, (Element[])args.Clone()); apps.Add(t); var u = new HashSet<Element>(); res.references.Add(t); u.Add(res); foreach (var a in args) if (!u.Contains(a)) { u.Add(a); a.references.Add(t); } } }
public void SetConstant(Element res) { if (Arity != 0 || apps.Count > 0) throw new ArgumentException(); var t = new FuncTuple(this, res, null); apps.Add(t); res.references.Add(t); }