Add benchmark result [gc-ta7-tt1 | ipc-1998 | mystery-round-1-strips | 20]
This commit is contained in:
parent
3f5ebb5ab2
commit
045eff15cb
50
gc-ta7-tt1/ipc-1998_mystery-round-1-strips_20.env
Normal file
50
gc-ta7-tt1/ipc-1998_mystery-round-1-strips_20.env
Normal file
@ -0,0 +1,50 @@
|
||||
command:
|
||||
- timeout
|
||||
- -m=8000000
|
||||
- -t=900
|
||||
- python3
|
||||
- /home/pluehne/Documents/ASP/plasp-javier/encodings/planner/runplanner.py
|
||||
- --domain=/home/pluehne/Documents/ASP/pddl-instances/ipc-1998/domains/mystery-round-1-strips/domain.pddl
|
||||
- /home/pluehne/Documents/ASP/pddl-instances/ipc-1998/domains/mystery-round-1-strips/instances/instance-20.pddl
|
||||
- --stats
|
||||
- --verbose
|
||||
- --print-call
|
||||
- --translate
|
||||
- -B 0.9
|
||||
- --parallel=0
|
||||
- --shallow
|
||||
- --use-heuristic
|
||||
- --test-until-not-sat
|
||||
- --test=0
|
||||
- --test-add=7
|
||||
- --test-times=1
|
||||
configuration:
|
||||
id: gc-ta7-tt1
|
||||
instanceSets:
|
||||
- lpnmr-first-plan-not-serializable
|
||||
options:
|
||||
- --stats
|
||||
- --verbose
|
||||
- --print-call
|
||||
- --translate
|
||||
- -B 0.9
|
||||
- --parallel=0
|
||||
- --shallow
|
||||
- --use-heuristic
|
||||
- --test-until-not-sat
|
||||
- --test=0
|
||||
- --test-add=7
|
||||
- --test-times=1
|
||||
exitCode: 0
|
||||
instance:
|
||||
domain: mystery-round-1-strips
|
||||
instance: 20
|
||||
ipc: ipc-1998
|
||||
versions:
|
||||
clingo: 5.2.2
|
||||
fastDownward: 10997:847cdf0069cab0c8841a9958e783d1a7340fe2e9 (2017-11-02 15:10 +0100)
|
||||
planner: 61750c0521c6104870e5b881c8b0c237e2af4a96 (2017-11-27 07:44:27 +0100)
|
||||
plasp: 3.1.1
|
||||
python: 3.6.3
|
||||
workingDirectory: /home/pluehne/Documents/ASP/plasp-javier/encodings/planner
|
||||
|
33
gc-ta7-tt1/ipc-1998_mystery-round-1-strips_20.err
Normal file
33
gc-ta7-tt1/ipc-1998_mystery-round-1-strips_20.err
Normal file
@ -0,0 +1,33 @@
|
||||
# configuration: {'id': 'gc-ta7-tt1', 'options': ['--stats', '--verbose', '--print-call', '--translate', '-B 0.9', '--parallel=0', '--shallow', '--use-heuristic', '--test-until-not-sat', '--test=0', '--test-add=7', '--test-times=1'], 'instanceSets': ['lpnmr-first-plan-not-serializable']}
|
||||
# instance: {'ipc': 'ipc-1998', 'domain': 'mystery-round-1-strips', 'instance': 20}
|
||||
# command: ['timeout', '-m=8000000', '-t=900', 'python3', '/home/pluehne/Documents/ASP/plasp-javier/encodings/planner/runplanner.py', '--domain=/home/pluehne/Documents/ASP/pddl-instances/ipc-1998/domains/mystery-round-1-strips/domain.pddl', '/home/pluehne/Documents/ASP/pddl-instances/ipc-1998/domains/mystery-round-1-strips/instances/instance-20.pddl', '--stats', '--verbose', '--print-call', '--translate', '-B 0.9', '--parallel=0', '--shallow', '--use-heuristic', '--test-until-not-sat', '--test=0', '--test-add=7', '--test-times=1']
|
||||
# working directory: /home/pluehne/Documents/ASP/plasp-javier/encodings/planner
|
||||
# exit code: 0
|
||||
/home/pluehne/Documents/ASP/plasp-javier/encodings/strips/preprocess.lp:13:4-34: info: atom does not occur in any rule head:
|
||||
requires(feature(actionCosts))
|
||||
|
||||
/home/pluehne/Documents/ASP/plasp-javier/encodings/strips/preprocess.lp:14:4-33: info: atom does not occur in any rule head:
|
||||
requires(feature(axiomRules))
|
||||
|
||||
/home/pluehne/Documents/ASP/plasp-javier/encodings/strips/preprocess.lp:15:4-41: info: atom does not occur in any rule head:
|
||||
requires(feature(conditionalEffects))
|
||||
|
||||
/home/pluehne/Documents/ASP/plasp-javier/encodings/strips/strips-incremental.lp:66:15-28: info: atom does not occur in any rule head:
|
||||
mutexGroup(G)
|
||||
|
||||
/home/pluehne/Documents/ASP/plasp-javier/encodings/strips/strips-incremental.lp:66:30-45: info: atom does not occur in any rule head:
|
||||
contains(G,X,V)
|
||||
|
||||
/home/pluehne/Documents/ASP/plasp-javier/encodings/strips/strips-incremental.lp:67:15-28: info: atom does not occur in any rule head:
|
||||
mutexGroup(G)
|
||||
|
||||
/home/pluehne/Documents/ASP/plasp-javier/encodings/strips/strips-incremental.lp:74:41-56: info: atom does not occur in any rule head:
|
||||
contains(G,X,V)
|
||||
|
||||
/home/pluehne/Documents/ASP/plasp-javier/encodings/strips/strips-incremental.lp:84:41-56: info: atom does not occur in any rule head:
|
||||
contains(G,X,V)
|
||||
|
||||
# planner call: /home/wv/bin/linux/64/fast-downward/fast-downward.py --translate --build=release64 /home/pluehne/Documents/ASP/pddl-instances/ipc-1998/domains/mystery-round-1-strips/domain.pddl /home/pluehne/Documents/ASP/pddl-instances/ipc-1998/domains/mystery-round-1-strips/instances/instance-20.pddl && plasp-3.1.1 translate --parsing-mode=compatibility output.sas | /home/pluehne/Documents/ASP/plasp-javier/encodings/planner/planner.py - /home/pluehne/Documents/ASP/plasp-javier/encodings/strips/preprocess.lp /home/pluehne/Documents/ASP/plasp-javier/encodings/strips/strips-incremental.lp --stats --verbose -B 0.9 --test-until-not-sat --query-at-last --check-at-last --forbid-actions --force-actions -c planner_on=1 --test=- --test=/home/pluehne/Documents/ASP/plasp-javier/encodings/planner/test_files/test.lp /home/pluehne/Documents/ASP/plasp-javier/encodings/planner/test_files/block_actions_t.lp --heuristic=Domain /home/pluehne/Documents/ASP/plasp-javier/encodings/planner/heuristic.lp -c _shallow=1 -c _closure=3 -c _parallel=0
|
||||
FINISHED CPU 38.78 MEM 0 MAXMEM 316476 STALE 1 MAXMEM_RSS 259888
|
||||
<time name="ALL">38650</time>
|
||||
|
284
gc-ta7-tt1/ipc-1998_mystery-round-1-strips_20.out
Normal file
284
gc-ta7-tt1/ipc-1998_mystery-round-1-strips_20.out
Normal file
@ -0,0 +1,284 @@
|
||||
INFO Running translator.
|
||||
INFO translator input: ['/home/pluehne/Documents/ASP/pddl-instances/ipc-1998/domains/mystery-round-1-strips/domain.pddl', '/home/pluehne/Documents/ASP/pddl-instances/ipc-1998/domains/mystery-round-1-strips/instances/instance-20.pddl']
|
||||
INFO translator arguments: []
|
||||
INFO translator time limit: None
|
||||
INFO translator memory limit: None
|
||||
INFO callstring: /home/pluehne/.usr/bin/python /home/wv/bin/linux/64/fast-downward-10997/builds/release64/bin/translate/translate.py /home/pluehne/Documents/ASP/pddl-instances/ipc-1998/domains/mystery-round-1-strips/domain.pddl /home/pluehne/Documents/ASP/pddl-instances/ipc-1998/domains/mystery-round-1-strips/instances/instance-20.pddl
|
||||
Parsing...
|
||||
Parsing: [0.020s CPU, 0.023s wall-clock]
|
||||
Normalizing task... [0.000s CPU, 0.001s wall-clock]
|
||||
Instantiating...
|
||||
Generating Datalog program... [0.010s CPU, 0.006s wall-clock]
|
||||
Normalizing Datalog program...
|
||||
Normalizing Datalog program: [0.030s CPU, 0.029s wall-clock]
|
||||
Preparing model... [0.020s CPU, 0.020s wall-clock]
|
||||
Generated 42 rules.
|
||||
Computing model... [0.930s CPU, 0.928s wall-clock]
|
||||
7768 relevant atoms
|
||||
4174 auxiliary atoms
|
||||
11942 final queue length
|
||||
25710 total queue pushes
|
||||
Completing instantiation... [2.840s CPU, 2.838s wall-clock]
|
||||
Instantiating: [3.830s CPU, 3.833s wall-clock]
|
||||
Computing fact groups...
|
||||
Finding invariants...
|
||||
12 initial candidates
|
||||
Finding invariants: [0.070s CPU, 0.064s wall-clock]
|
||||
Checking invariant weight... [0.000s CPU, 0.002s wall-clock]
|
||||
Instantiating groups... [0.040s CPU, 0.038s wall-clock]
|
||||
Collecting mutex groups... [0.000s CPU, 0.003s wall-clock]
|
||||
Choosing groups...
|
||||
2 uncovered facts
|
||||
Choosing groups: [0.010s CPU, 0.009s wall-clock]
|
||||
Building translation key... [0.010s CPU, 0.006s wall-clock]
|
||||
Computing fact groups: [0.150s CPU, 0.143s wall-clock]
|
||||
Building STRIPS to SAS dictionary... [0.000s CPU, 0.002s wall-clock]
|
||||
Building dictionary for full mutex groups... [0.000s CPU, 0.005s wall-clock]
|
||||
Building mutex information...
|
||||
Building mutex information: [0.010s CPU, 0.003s wall-clock]
|
||||
Translating task...
|
||||
Processing axioms...
|
||||
Simplifying axioms... [0.000s CPU, 0.000s wall-clock]
|
||||
Processing axioms: [0.110s CPU, 0.111s wall-clock]
|
||||
Translating task: [2.110s CPU, 2.113s wall-clock]
|
||||
0 effect conditions simplified
|
||||
0 implied preconditions added
|
||||
Detecting unreachable propositions...
|
||||
0 operators removed
|
||||
0 axioms removed
|
||||
46 propositions removed
|
||||
Detecting unreachable propositions: [1.120s CPU, 1.124s wall-clock]
|
||||
Reordering and filtering variables...
|
||||
42 of 42 variables necessary.
|
||||
0 of 42 mutex groups necessary.
|
||||
7094 of 7094 operators necessary.
|
||||
0 of 0 axiom rules necessary.
|
||||
Reordering and filtering variables: [0.330s CPU, 0.324s wall-clock]
|
||||
Translator variables: 42
|
||||
Translator derived variables: 0
|
||||
Translator facts: 462
|
||||
Translator goal facts: 1
|
||||
Translator mutex groups: 0
|
||||
Translator total mutex groups size: 0
|
||||
Translator operators: 7094
|
||||
Translator axioms: 0
|
||||
Translator task size: 40295
|
||||
Translator peak memory: 63180 KB
|
||||
Writing output... [0.710s CPU, 0.770s wall-clock]
|
||||
Done! [8.370s CPU, 8.436s wall-clock]
|
||||
planner.py version 0.0.1
|
||||
|
||||
Time: 1.68s
|
||||
Memory: 164MB
|
||||
|
||||
Iteration 1
|
||||
Queue: [(0,0,0,True), (1,5,0,True), (2,10,0,True), (3,15,0,True), (4,20,0,True), (5,25,0,True), (6,30,0,True)]
|
||||
Grounded Until: 0
|
||||
Solving...
|
||||
Solving Time: 0.01s
|
||||
Memory: 165MB (+1MB)
|
||||
UNSAT
|
||||
Iteration Time: 0.01s
|
||||
|
||||
Iteration 2
|
||||
Queue: [(1,5,0,True), (2,10,0,True), (3,15,0,True), (4,20,0,True), (5,25,0,True), (6,30,0,True)]
|
||||
Grounded Until: 0
|
||||
Grounding... [('step', [1]), ('step', [2]), ('step', [3]), ('step', [4]), ('step', [5]), ('check', [5])]
|
||||
Grounding Time: 0.51s
|
||||
Memory: 165MB (+0MB)
|
||||
Unblocking actions...
|
||||
Solving...
|
||||
Solving Time: 0.06s
|
||||
Memory: 167MB (+2MB)
|
||||
UNSAT
|
||||
Iteration Time: 0.88s
|
||||
|
||||
Iteration 3
|
||||
Queue: [(2,10,0,True), (3,15,0,True), (4,20,0,True), (5,25,0,True), (6,30,0,True)]
|
||||
Grounded Until: 5
|
||||
Grounding... [('step', [6]), ('step', [7]), ('step', [8]), ('step', [9]), ('step', [10]), ('check', [10])]
|
||||
Grounding Time: 0.59s
|
||||
Memory: 178MB (+11MB)
|
||||
Unblocking actions...
|
||||
Solving...
|
||||
Solving Time: 0.05s
|
||||
Memory: 201MB (+23MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.37s
|
||||
Memory: 269MB (+68MB)
|
||||
Solving...
|
||||
Solving Time: 0.03s
|
||||
Memory: 269MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.34s
|
||||
Memory: 270MB (+1MB)
|
||||
Solving...
|
||||
Solving Time: 0.03s
|
||||
Memory: 270MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.35s
|
||||
Memory: 270MB (+0MB)
|
||||
Solving...
|
||||
Solving Time: 0.03s
|
||||
Memory: 270MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.35s
|
||||
Memory: 270MB (+0MB)
|
||||
Solving...
|
||||
Solving Time: 0.03s
|
||||
Memory: 270MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.36s
|
||||
Memory: 270MB (+0MB)
|
||||
Solving...
|
||||
Solving Time: 0.02s
|
||||
Memory: 270MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.34s
|
||||
Memory: 271MB (+1MB)
|
||||
Solving...
|
||||
Solving Time: 0.02s
|
||||
Memory: 271MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.35s
|
||||
Memory: 271MB (+0MB)
|
||||
Solving...
|
||||
Solving Time: 0.03s
|
||||
Memory: 271MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.35s
|
||||
Memory: 271MB (+0MB)
|
||||
Solving...
|
||||
Solving Time: 0.02s
|
||||
Memory: 271MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.36s
|
||||
Memory: 271MB (+0MB)
|
||||
Solving...
|
||||
Solving Time: 0.04s
|
||||
Memory: 271MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.35s
|
||||
Memory: 271MB (+0MB)
|
||||
Solving...
|
||||
Solving Time: 0.03s
|
||||
Memory: 271MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.36s
|
||||
Memory: 271MB (+0MB)
|
||||
Solving...
|
||||
Solving Time: 0.03s
|
||||
Memory: 271MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.35s
|
||||
Memory: 271MB (+0MB)
|
||||
Solving...
|
||||
Solving Time: 0.03s
|
||||
Memory: 271MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.35s
|
||||
Memory: 271MB (+0MB)
|
||||
Solving...
|
||||
Solving Time: 0.03s
|
||||
Memory: 271MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.35s
|
||||
Memory: 271MB (+0MB)
|
||||
Solving...
|
||||
Solving Time: 0.03s
|
||||
Memory: 271MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.36s
|
||||
Memory: 271MB (+0MB)
|
||||
Solving...
|
||||
Solving Time: 0.03s
|
||||
Memory: 271MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.35s
|
||||
Memory: 271MB (+0MB)
|
||||
Solving...
|
||||
Solving Time: 0.02s
|
||||
Memory: 271MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
NOT SERIALIZABLE
|
||||
Testing Time: 1.36s
|
||||
Memory: 271MB (+0MB)
|
||||
Solving...
|
||||
Solving Time: 0.02s
|
||||
Memory: 271MB (+0MB)
|
||||
SAT
|
||||
Testing...
|
||||
SERIALIZABLE
|
||||
Testing Time: 1.34s
|
||||
Memory: 271MB (+0MB)
|
||||
Answer: 18
|
||||
occurs(action(("overcome","abrasion","intoxication","wonderbread","neptune","venus")),1) occurs(action(("feast","achievement","cherry","turkey","bosnia","goias")),1) occurs(action(("feast","aesthetics","muffin","yogurt","goias","arizona")),1) occurs(action(("feast","curiosity","cod","tuna","bosnia","goias")),1) occurs(action(("feast","empathy","pork","cod","guanabara","quebec")),1) occurs(action(("feast","expectation","orange","marzipan","guanabara","quebec")),1) occurs(action(("feast","intoxication","wonderbread","yogurt","moravia","bosnia")),1) occurs(action(("feast","love","mutton","pork","guanabara","quebec")),1) occurs(action(("feast","satisfaction","sweetroll","muffin","bosnia","goias")),1) occurs(action(("feast","triumph","yogurt","tuna","goias","arizona")),1) occurs(action(("feast","understanding","marzipan","cherry","kentucky","moravia")),1) occurs(action(("feast","achievement","turkey","guava","quebec","alsace")),2) occurs(action(("feast","empathy","cod","marzipan","moravia","bosnia")),2) occurs(action(("feast","expectation","marzipan","cherry","alsace","kentucky")),2) occurs(action(("feast","intoxication","yogurt","tuna","bosnia","goias")),2) occurs(action(("feast","love","pork","cod","manitoba","guanabara")),2) occurs(action(("feast","satisfaction","muffin","yogurt","bosnia","goias")),2) occurs(action(("feast","triumph","tuna","cod","goias","arizona")),2) occurs(action(("feast","expectation","cherry","pepper","moravia","bosnia")),3) occurs(action(("feast","achievement","guava","baguette","bosnia","goias")),3) occurs(action(("feast","empathy","marzipan","cod","quebec","alsace")),3) occurs(action(("feast","intoxication","tuna","turkey","bosnia","goias")),3) occurs(action(("feast","love","cod","pork","kentucky","moravia")),3) occurs(action(("feast","satisfaction","yogurt","tuna","moravia","bosnia")),3) occurs(action(("feast","empathy","cod","marzipan","alsace","kentucky")),4) occurs(action(("feast","expectation","pepper","guava","surrey","bavaria")),4) occurs(action(("feast","intoxication","turkey","guava","guanabara","quebec")),4) occurs(action(("feast","understanding","cherry","turkey","kentucky","moravia")),4) occurs(action(("feast","satisfaction","tuna","sweetroll","moravia","bosnia")),4) occurs(action(("feast","intoxication","guava","pepper","moravia","bosnia")),5) occurs(action(("feast","empathy","marzipan","cherry","guanabara","quebec")),5) occurs(action(("feast","satisfaction","sweetroll","muffin","moravia","bosnia")),5) occurs(action(("feast","understanding","turkey","tuna","manitoba","guanabara")),5) occurs(action(("succumb","abrasion","intoxication","pepper","neptune","venus")),6) occurs(action(("feast","expectation","guava","baguette","kentucky","moravia")),6) occurs(action(("feast","intoxication","pepper","guava","oregon","surrey")),6) occurs(action(("feast","curiosity","tuna","cod","kentucky","moravia")),6) occurs(action(("feast","aesthetics","yogurt","wonderbread","kentucky","moravia")),7) occurs(action(("feast","expectation","baguette","rice","guanabara","quebec")),7) occurs(action(("feast","triumph","cod","marzipan","quebec","alsace")),7) occurs(action(("feast","understanding","tuna","yogurt","alsace","kentucky")),7) occurs(action(("feast","aesthetics","wonderbread","yogurt","kentucky","moravia")),8) occurs(action(("feast","curiosity","cod","marzipan","guanabara","quebec")),8) occurs(action(("feast","understanding","yogurt","wonderbread","alsace","kentucky")),8) occurs(action(("feast","intoxication","guava","pepper","alsace","kentucky")),9) occurs(action(("feast","curiosity","marzipan","orange","manitoba","guanabara")),9) occurs(action(("feast","understanding","wonderbread","yogurt","alsace","kentucky")),9) occurs(action(("feast","aesthetics","yogurt","muffin","quebec","alsace")),9) occurs(action(("feast","understanding","yogurt","wonderbread","guanabara","quebec")),10)
|
||||
SATISFIABLE
|
||||
|
||||
Models : 1+
|
||||
Calls : 20
|
||||
Time : 4.404s (Solving: 0.33s 1st Model: 0.21s Unsat: 0.01s)
|
||||
CPU Time : 4.344s
|
||||
|
||||
Choices : 34819 (Domain: 9572)
|
||||
Conflicts : 675 (Analyzed: 674)
|
||||
Restarts : 2 (Average: 337.00 Last: 71)
|
||||
Model-Level : 1164.4
|
||||
Problems : 20 (Average Length: 11.25 Splits: 0)
|
||||
Lemmas : 674 (Deleted: 0)
|
||||
Binary : 61 (Ratio: 9.05%)
|
||||
Ternary : 25 (Ratio: 3.71%)
|
||||
Conflict : 674 (Average Length: 77.7 Ratio: 100.00%)
|
||||
Loop : 0 (Average Length: 0.0 Ratio: 0.00%)
|
||||
Other : 0 (Average Length: 0.0 Ratio: 0.00%)
|
||||
Backjumps : 674 (Average: 20.86 Max: 5090 Sum: 14058)
|
||||
Executed : 669 (Average: 20.79 Max: 5090 Sum: 14013 Ratio: 99.68%)
|
||||
Bounded : 5 (Average: 9.00 Max: 12 Sum: 45 Ratio: 0.32%)
|
||||
|
||||
Rules : 125665
|
||||
Atoms : 125216
|
||||
Bodies : 620 (Original: 619)
|
||||
Equivalences : 510 (Atom=Atom: 170 Body=Body: 0 Other: 340)
|
||||
Tight : Yes
|
||||
Variables : 71904 (Eliminated: 0 Frozen: 3568)
|
||||
Constraints : 371751 (Binary: 98.1% Ternary: 0.9% Other: 1.0%)
|
||||
|
||||
Memory Peak : 271MB
|
||||
Max. Length : 10 steps
|
||||
Sol. Length : 10 steps
|
||||
Models : 18
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user