AddVars adds all variables from term to map, where term is either variable, constant or atom.
(term Term, m map[Variable]bool)
| 1397 | // AddVars adds all variables from term to map, where term is either |
| 1398 | // variable, constant or atom. |
| 1399 | func AddVars(term Term, m map[Variable]bool) { |
| 1400 | switch t := term.(type) { |
| 1401 | case Constant: |
| 1402 | return |
| 1403 | case Variable: |
| 1404 | m[t] = true |
| 1405 | case ApplyFn: |
| 1406 | for _, baseTerm := range t.Args { |
| 1407 | AddVars(baseTerm, m) |
| 1408 | } |
| 1409 | case Atom: |
| 1410 | for _, baseTerm := range t.Args { |
| 1411 | AddVars(baseTerm, m) |
| 1412 | } |
| 1413 | case NegAtom: |
| 1414 | AddVars(t.Atom, m) |
| 1415 | case Eq: |
| 1416 | AddVars(t.Left, m) |
| 1417 | AddVars(t.Right, m) |
| 1418 | case Ineq: |
| 1419 | AddVars(t.Left, m) |
| 1420 | AddVars(t.Right, m) |
| 1421 | case TemporalLiteral: |
| 1422 | AddVars(t.Literal, m) |
| 1423 | if t.Interval != nil { |
| 1424 | addVarsFromInterval(*t.Interval, m) |
| 1425 | } |
| 1426 | if t.Operator != nil { |
| 1427 | addVarsFromInterval(t.Operator.Interval, m) |
| 1428 | } |
| 1429 | case TemporalAtom: |
| 1430 | AddVars(t.Atom, m) |
| 1431 | if t.Interval != nil { |
| 1432 | addVarsFromInterval(*t.Interval, m) |
| 1433 | } |
| 1434 | } |
| 1435 | } |
| 1436 | |
| 1437 | func addVarsFromInterval(interval Interval, m map[Variable]bool) { |
| 1438 | if interval.Start.Type == VariableBound { |