Access Control is now enabled for Gitlab Pages so you can now restrict Pages to authorized users only. If needed, make your website publicly available : Navigate to your project's Settings > General > Visibility and select Everyone in pages section.

Commit e7a24adb authored by Tony Licata's avatar Tony Licata

added PV05 and real_time/1 predicate

parent cb839fd4
package ch.heiafr.prolograal.builtins.predicates;
import ch.heiafr.prolograal.runtime.*;
import java.util.Map;
/**
* Class representing the var/1(X) built-in predicate.
* Is unifiable only if X is an unbound variable.
* @author Martin Spoto
* @see ProloGraalBuiltinClause
*/
public final class ProloGraalVarBuiltin extends ProloGraalBuiltinClause {
/**
* Class representing the head of this predicate.
* Necessary to override the unification behaviour.
*/
private static class VarPredicateHead extends ProloGraalStructure {
public VarPredicateHead(Map<ProloGraalVariable, ProloGraalVariable> variables) {
super(variables);
// add the correct functor for this predicate, and an anonymous variable since we do not need it
setFunctor(new ProloGraalAtom(variables, "var"));
addSubterm(new ProloGraalVariable(variables, "_"));
}
/**
* Overrides the default structure unification behaviour.
* Checks that the param has the same functor and exactly one argument, then checks that the argument
* resolves to a variable
* @return true if other has the same functor and exactly one argument, and that argument is an unbound variable
*/
@Override
public boolean unify(ProloGraalTerm<?> other) {
if (other instanceof ProloGraalStructure) {
ProloGraalStructure struct = (ProloGraalStructure) other;
if (struct.getFunctor().equals(getFunctor()) && struct.getArity() == 1) {
return struct.getArguments().get(0).getRootValue() instanceof ProloGraalVariable;
}
}
return false;
}
// override the default copy so we do not lose the custom unification behaviour
@Override
public ProloGraalStructure copy(Map<ProloGraalVariable, ProloGraalVariable> variables) {
return new VarPredicateHead(variables);
}
}
public ProloGraalVarBuiltin() {
super();
// creates our custom head and set it
VarPredicateHead head = new VarPredicateHead(getVariables());
setHead(head);
}
// override the default copy so we do not lose the custom head
@Override
public ProloGraalClause copy() {
return new ProloGraalVarBuiltin();
}
}
![Logo HEIAFR](logo.png)
# PV de séance du 17.06, 08h30
Membres : Frédéric Bapst, Tony Licata
Lieu : domicile
## Ordre du jour
- validation du précédant PV
- correction du parse des atoms + correction de is/2
- suppression de la récursivité lors de la résolution d'un but
- premiers tests de performance
## Validation du précédant PV
le précédant PV a été validé
## Objectifs du projet
- utilisation d'un profileur pour cibler les codes lents
- les commentaires devraient être en javadoc si possible
- caractère d'échapement pour ProloGraal? (ajouter à une TODO list générale)
## Tâches à réaliser
- recherches sur l'utilisation d'un profiler pour GraalVM
- modifier les dépendances Maven pour être à jour avec GraalVM 20.1.0
- analyse des problèmes de performance actuels de ProloGraal (sur-utilisation de la heap et du GC)
- documentation et premières implémentations des mécanismes d'optimisation offerts par GraalVM
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment